#ifndef PIECE_H
#define PIECE_H

#define FULL 4					//一个积木由4个方块构成

class piece					//定义二维矩阵类，格块piece构成屏幕显示
{
public:
	piece(int=4,int=4);
	piece(const piece &);
	virtual ~piece();
	void creatPiece(int,int);
	void deletePiece();
	
	void clearPiece();				//清除piece内容
	bool write_To(piece &,int,int) const;		//将自己拷贝到目标piece以(x,y)为基准的位置中,强制覆盖
	bool read_From(const piece &,int,int);		//从目标piece拷贝到自己以(x,y)为基准的位置中，强制覆盖
	bool read_From_soft(const piece &,int,int);	//软性拷贝，不拷贝空位，即不遮盖读取
	bool lost(const piece &,int,int);		//判断读取的数据否会覆盖非0数据，或者非0数是否会丢失到区域外，会则返回true

	int & operator () (int,int) const;		//重载()运算符，支持使用piece(x,y)访问每个像素,像素坐标都是以(0,0)为基准起点的
	piece & operator = (const piece &);		//重载=运算符
private:
	int row;
	int columns;
	int** a;
};

#endif
